jQuery(function($) {

  //加载 jQuery 工具插件.
  $.extend({
    /**
  	 * 获取URL参数.
  	 * @param key.
  	 * @return val || json.
  	 */
  	getParam: function(key) {
  		var json = {}, data;
  		$.each(location.search.substr(1).split("&"), function(i, n) {
  			data = n.split("=");
  			json[data[0]] = data[1];
  		});
  		return key != undefined ? json[key] : json;
  	}
  });

  console.log($.fn.jquery);

  /**
   * 应用微信接口配置.
   */
  function wxInit() {
    //启用的微信接口.
    wxConfig['jsApiList'] = [
      'checkJsApi',
      'scanQRCode'
    ];
    //开启调试模式.
    wxConfig['debug'] = true;
    console.log('核对微信配置：');
    console.log(wxConfig);
    //配置微信接口.
    wx.config(wxConfig);
  }

  //初始化微信接口.
  wxInit();

  //默认的微信接口调用配置.
  var apis = {
    'scanQRCode': {
        needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
        desc: 'scanQRCode desc',
        success: function (res) {
          var result = res.resultStr; // 当needResult 为 1 时，扫码返回的结果
          alert(result);
        },
        fail: function(err) {
          alert("接口调用失败");
          console.log(err);
        }
    }
  };

  //微信JS-SDK调用链接，单击事件。单击的时候，根据 href 指向调动相关接口，并且覆盖默认参数.
  $(".api-link").on("click", function() {

    var $that = $(this);
    //缓存要请求的接口地址.
    var name = $that.attr("href");
    //缓存参数集合.
    var parses = $that.data();

    //如果没有设置接口名，则什么也不做.
    if (!name) { return false; }
    //剔除前面的#.
    name = name.substr(1);

    //应用链接上配置的个性化设置.
    $.extend(apis[name], parses);

    //console.log(name, apis[name]);

    //调用微信接口.
    wx.scanQRCode({
			needResult: 1,
			desc: 'scanQRCode desc',
			success: function (res) {
			  alert(res.resultStr);
			},
      fail: function(err) {
        alert("接口调用失败");
        console.log(err);
      }
		});

    return false;
  });

  //console.log(wx);

  //config验证成功
  wx.ready(function(){
    console.log('wx ready');
    // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
  });
  //config验证失败.
  wx.error(function(res){
    console.log('wx error');
    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
  });

  //判断当前客户端版本是否支持指定JS接口
  wx.checkJsApi({
    jsApiList: ['scanQRCode'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
    success: function(res) {
      console.log(res);
      // 以键值对的形式返回，可用的api值true，不可用为false
      // 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
    },
    fail: function(err) {
      alert("判断客户端支持，执行失败");
      console.log(err);
    }
  });



  //console.log( $.getParam() );


  //接口调用链接，单击调用接口，传递对应参数.
  /*
  $(".api-link").on("click", function() {

    var $that = $(this);
    //缓存要请求的接口地址.
    var apiurl = $that.attr("href");
    //缓存参数集合.
    var parses = $that.data();

    $.getJSON(apiurl, parses).then(function(json) {
      console.log('成功了.');
      console.log(json);
    }, function(err) {
      console.log('失败了.');
      console.log(err);
    });

    return false;
  });
  */

});
